package com.colorlight.cloud.gateway.api.message.constraint.schedule;

import com.colorlight.cloud.gateway.api.message.constraint.base.Message;
import com.colorlight.cloud.gateway.api.message.constraint.protocol.ProtocolType;
import com.google.protobuf.ByteString;

/**
 * @author Demon
 * 下发指令的相互转化
 * 当前类与 	  {@link ProtocolType} 密切相关
 */
public interface ScheduleActions extends Message {
	/**
	 * 实体类转消息:下发消息时实现
	 * 部分消息不是指令消息  不需要实现
	 * 下发消息 将input 转为对象
	 *
	 * @return 将对象转为 ByteString
	 **/
	ByteString objectConvertBytes();
	
	/**
	 * 消息转实体类：上报消息时实现
	 * <p>
	 * 上报消息 将output 转为对象
	 *
	 * @param bytes bytes 将bytes 注入当前对象
	 * @return 当前对象
	 **/
	ScheduleActions byteConvertObject(ByteString bytes);

	/**
	 * 获取当前指令枚举
	 * @author Demon
	 * @date 23/1/2024/下午8:16
	 * @return 指令枚举
	 **/
	ProtocolType getProtocolType();
}
